Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItemPreviews.kt f4506450168d047b225b277620bf0f1d5dcd13b5 (f4506450) Text, 22.42 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.messaging.component

Tff7b72import T7ee787androidx.compose.foundation.background
Tff7b72import T7ee787androidx.compose.foundation.layout.Arrangement
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.tooling.preview.PreviewLightDark
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.common.util.nowMillis
Tff7b72import T7ee787org.meshtastic.core.model.Message
Tff7b72import T7ee787org.meshtastic.core.model.MessageStatus
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.sample_message
Tff7b72import T7ee787org.meshtastic.core.ui.component.preview.NodePreviewParameterProvider
Tff7b72import T7ee787org.meshtastic.core.ui.theme.AppTheme
Tff7b72import T7ee787org.meshtastic.feature.messaging.isSameGroup
Tff7b72import T7ee787org.meshtastic.proto.Routing

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffPreviewPublicTa5d6ff"Tb4b4b4)
Tf0883e@PreviewLightDark
Tf0883e@Composable
Tff7b72fun Td2a8ffMessageItemSignedPreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3signed Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffNet check — anyone copy on the ridge?Ta5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff14:02Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff6.5fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff9T79c0ff5Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff1T79c0ff0LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff5T79c0ff0T79c0ff0T79c0ff1Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3xeddsaSigned Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3unsigned Tff7b72= Te6edf3signedTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffCopy, weak but readable.Ta5d6ff"Tb4b4b4, Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff14:03Ta5d6ff"Tb4b4b4, Te6edf3uuid Tff7b72= T79c0ff1T79c0ff1LTb4b4b4, Te6edf3xeddsaSigned Tff7b72= Tff7b72falseTb4b4b4)
Te6edf3AppTheme Tb4b4b4{
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3backgroundTb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3listOfTb4b4b4(Te6edf3signedTb4b4b4, Te6edf3unsignedTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3msg Tff7b72-Tff7b72>
Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3msgTb4b4b4,
Te6edf3node Tff7b72= Te6edf3msgTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mickeyMouseTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffPreviewPublicTa5d6ff"Tb4b4b4)
Tf0883e@PreviewLightDark
Tf0883e@Composable
Tff7b72fun Td2a8ffMessageItemMarkdownPreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Mixed inline markdown covering all five styles — bold, strikethrough, italic, code, and a link — as it arrives
T8b949e// over the mesh (raw delimiters). The bubble should render styling with the delimiters removed (iOS parity).
Tff7b72val Te6edf3markdown Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffMeet at **noon** by the ~~old~~ new *bridge* — `README` and [map](https://example.com)Ta5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:41Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff7.0fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff9T79c0ff2Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff2T79c0ff0LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff6T79c0ff0T79c0ff0T79c0ff1Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Te6edf3AppTheme Tb4b4b4{
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3backgroundTb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3markdownTb4b4b4,
Te6edf3node Tff7b72= Te6edf3markdownTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mickeyMouseTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffPreviewPublicTa5d6ff"Tb4b4b4)
Tf0883e@PreviewLightDark
Tf0883e@Composable
Tff7b72fun Td2a8ffMessageItemStatusStatesPreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3ourNode Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mickeyMouse
Tff7b72val Te6edf3messages Tff7b72=
Te6edf3listOfTb4b4b4(
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffExplicit recipient ACKTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:00Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffChannel implicit ACKTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:01Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffDirect implicit ACKTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:02Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3isDirectMessage Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffQueued for sendTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:03Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffFailed to deliver to meshTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:04Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3MAX_RETRANSMITTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffChannel/key mismatchTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:05Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_CHANNELTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffCould not send encrypted messageTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:06Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_FAILEDTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffRecipient key unavailableTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:07Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_SEND_FAIL_PUBLIC_KEYTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffRecipient needs your keyTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:08Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3PKI_UNKNOWN_PUBKEYTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffMessage is too large to sendTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:09Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3TOO_LARGETb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffNo radio interfaceTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:10Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_INTERFACETb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffDuty cycle limitTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:11Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3DUTY_CYCLE_LIMITTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffRate limitedTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:12Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3RATE_LIMIT_EXCEEDEDTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffNo app responseTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:13Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NO_RESPONSETb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffInvalid requestTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:14Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3BAD_REQUESTTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffNot authorizedTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:15Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3NOT_AUTHORIZEDTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffAdmin session expiredTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:16Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3ADMIN_BAD_SESSION_KEYTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3StatusPreviewMessageTb4b4b4(
Te6edf3outgoingStatusPreviewMessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffAdmin key not authorizedTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:17Ta5d6ff"Tb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3RoutingTb4b4b4.Te6edf3ErrorTb4b4b4.Te6edf3ADMIN_PUBLIC_KEY_UNAUTHORIZEDTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Te6edf3AppTheme Tb4b4b4{
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3backgroundTb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff1T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3messagesTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3preview Tff7b72-Tff7b72>
Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3previewTb4b4b4.Te6edf3messageTb4b4b4,
Te6edf3node Tff7b72= Te6edf3previewTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3ourNodeTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onStatusClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3isDirectMessage Tff7b72= Te6edf3previewTb4b4b4.Te6edf3isDirectMessageTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72const Tff7b72val Te6edf3PREVIEW_MINUTE_MILLIS Tff7b72= T79c0ff6T79c0ff0Te6edf3_000L

T8b949e/**
* A full conversation: a received same-sender run, the SAME sender returning after a >10-minute gap (which must start a
* new block with its own header), then a sent run. Grouping is computed with the real [isSameGroup] rule, so this pins
* the grouped treatment end to end — header only at the start of each block, 4dp flattened facing corners within a
* block, full rounding on the outer edges.
*/
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffPreviewPublicTa5d6ff"Tb4b4b4)
Tf0883e@PreviewLightDark
Tf0883e@Composable
Tff7b72fun Td2a8ffMessageItemGroupedRunPreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3ourNode Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mickeyMouse
Tff7b72val Te6edf3minnie Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouse
Tff7b72val Te6edf3t0 Tff7b72= Te6edf3nowMillis
Tff7b72val Te6edf3base Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffTrailhead in 10Ta5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:12Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff5.5fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff8T79c0ff8Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3T79c0ff0LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3t0Tb4b4b4,
Te6edf3node Tff7b72= Te6edf3minnieTb4b4b4,
Te6edf3read Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff7T79c0ff0T79c0ff0T79c0ff1Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3run Tff7b72=
Te6edf3listOfTb4b4b4(
Te6edf3baseTb4b4b4,
Te6edf3baseTb4b4b4.Te6edf3copyTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffParking lot is full, use the overflowTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:13Ta5d6ff"Tb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3t0 Tff7b72+ T79c0ff1 Tff7b72* Te6edf3PREVIEW_MINUTE_MILLISTb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3T79c0ff1LTb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff7T79c0ff0T79c0ff0T79c0ff2Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3baseTb4b4b4.Te6edf3copyTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffBring waterTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:14Ta5d6ff"Tb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3t0 Tff7b72+ T79c0ff2 Tff7b72* Te6edf3PREVIEW_MINUTE_MILLISTb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3T79c0ff2LTb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff7T79c0ff0T79c0ff0T79c0ff3Tb4b4b4,
Tb4b4b4)Tb4b4b4,
T8b949e// Same sender, but 33 minutes later — past the grouping window, so this starts a new block.
Te6edf3baseTb4b4b4.Te6edf3copyTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffStill waiting at the junctionTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:47Ta5d6ff"Tb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3t0 Tff7b72+ T79c0ff3T79c0ff5 Tff7b72* Te6edf3PREVIEW_MINUTE_MILLISTb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3T79c0ff3LTb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff7T79c0ff0T79c0ff0T79c0ff4Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3baseTb4b4b4.Te6edf3copyTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffCopy thatTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:48Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3t0 Tff7b72+ T79c0ff3T79c0ff6 Tff7b72* Te6edf3PREVIEW_MINUTE_MILLISTb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3T79c0ff4LTb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff7T79c0ff0T79c0ff0T79c0ff5Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3baseTb4b4b4.Te6edf3copyTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffOmwTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff09:49Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTETb4b4b4,
Te6edf3node Tff7b72= Te6edf3ourNodeTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3t0 Tff7b72+ T79c0ff3T79c0ff7 Tff7b72* Te6edf3PREVIEW_MINUTE_MILLISTb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3T79c0ff5LTb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff7T79c0ff0T79c0ff0T79c0ff6Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3AppTheme Tb4b4b4{
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3backgroundTb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3runTb4b4b4.Te6edf3forEachIndexed Tb4b4b4{ Te6edf3indexTb4b4b4, Te6edf3msg Tff7b72-Tff7b72>
Tff7b72val Te6edf3prevSame Tff7b72= Te6edf3index Tff7b72> T79c0ff0 Tff7b72&Tff7b72& Te6edf3isSameGroupTb4b4b4(Te6edf3runTff7b72[Te6edf3index Tff7b72- T79c0ff1Tff7b72]Tb4b4b4, Te6edf3msgTb4b4b4)
Tff7b72val Te6edf3nextSame Tff7b72= Te6edf3index Tff7b72< Te6edf3runTb4b4b4.Te6edf3lastIndex Tff7b72&Tff7b72& Te6edf3isSameGroupTb4b4b4(Te6edf3msgTb4b4b4, Te6edf3runTff7b72[Te6edf3index Tff7b72+ T79c0ff1Tff7b72]Tb4b4b4)
Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3msgTb4b4b4,
Te6edf3node Tff7b72= Te6edf3msgTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3ourNodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3showUserName Tff7b72= Tff7b72!Te6edf3prevSameTb4b4b4,
Te6edf3hasSamePrev Tff7b72= Te6edf3prevSameTb4b4b4,
Te6edf3hasSameNext Tff7b72= Te6edf3nextSameTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@PreviewLightDark
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffMessageItemPreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3sent Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3sample_messageTb4b4b4)Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:00Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVEREDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff2T79c0ff0.5fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff9T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff1LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mickeyMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff4T79c0ff5T79c0ff4T79c0ff5Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3received Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffThis is a received messageTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:10Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff2.5fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff9T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff2LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff4T79c0ff5T79c0ff4T79c0ff5Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3receivedWithOriginalMessage Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffThis is a received message w/ original, this is a longer message to test next-lining.Ta5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:20Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff2.5fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff9T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff2Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff2LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff4T79c0ff5T79c0ff4T79c0ff5Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3originalMessage Tff7b72= Te6edf3receivedTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3translatedMessage Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffHola, ¿cómo estás?Ta5d6ff"Tb4b4b4,
Te6edf3translatedText Tff7b72= Ta5d6ff"Ta5d6ffHello, how are you?Ta5d6ff"Tb4b4b4,
Te6edf3showTranslated Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:25Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff2.0fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff8T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff4LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff4T79c0ff5T79c0ff4T79c0ff7Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)
Tff7b72val Te6edf3filteredMessage Tff7b72=
Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffThis message was filteredTa5d6ff"Tb4b4b4,
Te6edf3time Tff7b72= Ta5d6ff"Ta5d6ff10:30Ta5d6ff"Tb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff1.5fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff7T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3uuid Tff7b72= T79c0ff3LTb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3NodePreviewParameterProviderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3minnieMouseTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= T79c0ff4T79c0ff5T79c0ff4T79c0ff6Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3filtered Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)
Te6edf3AppTheme Tb4b4b4{
Te6edf3ColumnTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3backgroundTb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3sentTb4b4b4,
Te6edf3node Tff7b72= Te6edf3sentTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3sentTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)

Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3receivedTb4b4b4,
Te6edf3node Tff7b72= Te6edf3receivedTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3sentTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)

Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3receivedWithOriginalMessageTb4b4b4,
Te6edf3node Tff7b72= Te6edf3receivedWithOriginalMessageTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3sentTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)

Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3translatedMessageTb4b4b4,
Te6edf3node Tff7b72= Te6edf3translatedMessageTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3sentTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3translationAvailable Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)

Te6edf3MessageItemTb4b4b4(
Te6edf3message Tff7b72= Te6edf3filteredMessageTb4b4b4,
Te6edf3node Tff7b72= Te6edf3filteredMessageTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3selected Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3ourNode Tff7b72= Te6edf3sentTb4b4b4.Te6edf3nodeTb4b4b4,
Te6edf3onReply Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3sendReaction Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onDoubleClick Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToOriginalMessage Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72data Tff7b72class T56d364StatusPreviewMessageTb4b4b4(Tff7b72val Te6edf3messageTb4b4b4: Te6edf3MessageTb4b4b4, Tff7b72val Te6edf3isDirectMessageTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72falseTb4b4b4)

Tff7b72private Tff7b72fun Td2a8ffoutgoingStatusPreviewMessageTb4b4b4(
Te6edf3textTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3timeTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3statusTb4b4b4: Te6edf3MessageStatusTb4b4b4,
Te6edf3nodeTb4b4b4: Te6edf3orgTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3modelTb4b4b4.Te6edf3NodeTb4b4b4,
Te6edf3routingErrorTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tb4b4b4) Tff7b72= Te6edf3MessageTb4b4b4(
Te6edf3text Tff7b72= Te6edf3textTb4b4b4,
Te6edf3time Tff7b72= Te6edf3timeTb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3status Tff7b72= Te6edf3statusTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff0fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3uuid Tff7b72= Te6edf3timeTb4b4b4.Te6edf3filterTb4b4b4(Tffa657CharTff7b72::Te6edf3isDigitTb4b4b4)Tb4b4b4.Te6edf3toLongTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3receivedTime Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3node Tff7b72= Te6edf3nodeTb4b4b4,
Te6edf3read Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3routingError Tff7b72= Te6edf3routingErrorTb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3timeTb4b4b4.Te6edf3filterTb4b4b4(Tffa657CharTff7b72::Te6edf3isDigitTb4b4b4)Tb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3emojis Tff7b72= Te6edf3listOfTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3replyId Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3viaMqtt Tff7b72= Tff7b72falseTb4b4b4,
Tb4b4b4)

Served by rngit 1.5.0 - Generated in 0.14s